// 获取应用实例
const util = require('../../../utils/util')
const app = getApp()
Page({
  data: {
    showPrivacy: true,
    isAgree: false,
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: false,
  },
  agree(e){
    console.log("用户同意隐私授权, 接下来可以调用隐私协议中声明的隐私接口")
    wx.getClipboardData({
      success(res) {
        console.log("getClipboardData success", res)
      },
      fail(res) {
        console.log("getClipboardData fail", res)
      },
    })

    this.setData({showPrivacy: false, isAgree: true})
  },
  disagree(e){
    console.log("用户拒绝隐私授权, 未同意过的隐私协议中的接口将不能调用")
  },

  toHomeFn(){
    wx.switchTab({
      url: '../../index/index',
    })
  },
  // 事件处理函数
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  // 不同意
  disAgreeFn(){
    this.setData({showPrivacy: false, isAgree: false})
    console.log('拒绝');
  },
  // 同意
  handleAgreePrivacyAuthorization() {
    // 用户同意隐私协议事件回调
    console.log('同意');
    this.setData({showPrivacy: false, isAgree: true})

    // this.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' })
    // 用户点击了同意，之后所有已声明过的隐私接口和组件都可以调用了
    // wx.getUserProfile()
    // wx.chooseMedia()
    // wx.getClipboardData()
    // wx.startRecord()
  },

  handleOpenPrivacyContract() {
    // 打开隐私协议页面
    wx.openPrivacyContract({
      success: () => {
        console.log("打开隐私协议页面")
      }, // 打开成功
      fail: () => {}, // 打开失败
      complete: () => {}
    })
  },
 
  onLoad() {
    // 设置显示隐私弹出
    var that = this;
    wx.getPrivacySetting({
      success: res => {
        console.log('1.0',res) // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
        if (res.needAuthorization) {
          // 需要弹出隐私协议
          that.setData({
            showPrivacy: true
          })
        } else {
          // 用户已经同意过隐私协议，所以不需要再弹出隐私协议，也能调用已声明过的隐私接口
          // wx.getUserProfile()
          // wx.chooseMedia()
          // wx.getClipboardData()
          // wx.startRecord()
        }
      },
      fail: () => {},
      complete: () => {}
    })
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
    // 获取缓存的openid
    let openid = wx.getStorageSync('openid')
    let avatarUrl = wx.getStorageSync('avatarUrl')
    let nickName = wx.getStorageSync('nickName')
    if (openid) {
      this.setData({
        hasUserInfo: true,
        userInfo: {
          avatarUrl,
          nickName
        }
      })
    }
  },
  onShow(){
    let openid = wx.getStorageSync('openid')
    if(openid){
      if(wx.switchTab){
        wx.switchTab({
          url: '../my/my',
        })
      }
    }
  },
  getUserProfile(e) {
    if(!this.data.isAgree){
      wx.showToast({
        title: '请同意隐私协议再登录。',
        icon: 'none'
      })
      return false;
    }
    wx.clearStorageSync()
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        // console.log(res)
        let userInfo = res.userInfo;
        // console.log(userInfo);
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
        let {
          avatarUrl,
          nickName
        } = userInfo;
        // 新版本
        this.loginFn(avatarUrl, nickName)
          .then(content => {
            wx.clearStorageSync()
            // console.log('11111.0', content)
            let {
              code,
              msg,
              openid
            } = content.result;
            if (code == 200 || code == 1) {
              wx.clearStorageSync()
              // 缓存信息
              wx.setStorageSync('openid', openid)
              wx.setStorageSync('avatarUrl', avatarUrl)
              wx.setStorageSync('nickName', nickName)
              // 跳转个人中心
              let code = wx.getStorageSync('code')
              if (code) {
                wx.switchTab({
                  url: '../../index/index',
                })
              } else {
                if(wx.switchTab){
                  wx.switchTab({
                    url: '../my/my',
                  })
                }
                else {
                  wx.navigateBack({
                    delta: 2
                  })
                }
              }
            } else if (code == 11) {
              let {
                openid,
                nickName,
                avatarUrl
              } = content.result.content.data[0];
              // 缓存信息
              wx.setStorageSync('openid', openid)
              wx.setStorageSync('avatarUrl', avatarUrl)
              wx.setStorageSync('nickName', nickName)
              // 跳转个人中心
              if(wx.switchTab){
                wx.switchTab({
                  url: '../my/my',
                })
              }
              else {
                wx.navigateBack({
                  delta: 2
                })
              }
            }
            // 登记用户信息的反馈
            wx.showToast({
              title: msg,
              icon: 'none'
            })
          })
      }
    })
  },
  getUserInfo(e) {
    if(!this.data.isAgree){
      wx.showToast({
        title: '请同意隐私协议再登录。',
        icon: 'none'
      })
      return false;
    }

    wx.clearStorageSync()
    // 不推荐使用getUserInfo获取用户信息，预计自2021年4月13日起，getUserInfo将不再弹出弹窗，并直接返回匿名的用户个人信息
    // console.log(e)
    let userInfo = e.detail.userInfo
    let {
      avatarUrl,
      nickName
    } = userInfo;
    // 旧版本
    this.loginFn(avatarUrl, nickName)
      .then(content => {
        let {
          code,
          msg,
          openid
        } = content.result;
        if (code == 200 || code == 1) {
          wx.clearStorageSync();
          // 缓存信息
          wx.setStorageSync('openid', openid)
          wx.setStorageSync('avatarUrl', avatarUrl)
          wx.setStorageSync('nickName', nickName)
          // 跳转个人中心
          let code = wx.getStorageSync('code')
          if (code) {
            wx.switchTab({
              url: '../../index/index',
            })
          } else {
            if(wx.switchTab){
              wx.switchTab({
                url: '../my/my',
              })
            }
            else {
              wx.navigateBack({
                delta: 2
              })
            }
          }

        } else if (code == 11) {
          let {
            openid,
            nickName,
            avatarUrl
          } = content.result.content.data[0];
          // 缓存信息
          wx.setStorageSync('openid', openid)
          wx.setStorageSync('avatarUrl', avatarUrl)
          wx.setStorageSync('nickName', nickName)
          // 跳转个人中心
          if(wx.switchTab){
            wx.switchTab({
              url: '../my/my',
            })
          }
          else {
            wx.navigateBack({
              delta: 2
            })
          }
        }
        // 登记用户信息的反馈
        wx.showToast({
          title: msg,
          icon: 'none'
        })
      })
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  // 登录
  loginFn(avatarUrl, nickName) {
    if(this.data.isAgree){
       // 调用云函数
        return wx.cloud.callFunction({
          name: 'login',
          data: {
            avatarUrl,
            nickName
          }
        })
    }
    else {
      wx.showToast({
        title: '请同意隐私协议再登录。',
        icon: 'none'
      })
    }
  },
})